#include <xen/list.h>
#include <xen/iommu.h>
+#include <xen/kexec.h>
/* This one is for interrupt remapping */
struct acpi_ioapic_unit {
sts = op(iommu->reg, offset); \
if ( cond ) \
break; \
- if ( NOW() > start_time + DMAR_OPERATION_TIMEOUT ) \
- panic("%s:%d:%s: DMAR hardware is malfunctional\n", \
- __FILE__, __LINE__, __func__); \
+ if ( NOW() > start_time + DMAR_OPERATION_TIMEOUT ) { \
+ if ( !kexecing ) \
+ panic("%s:%d:%s: DMAR hardware is malfunctional\n",\
+ __FILE__, __LINE__, __func__); \
+ else \
+ break; \
+ } \
cpu_relax(); \
} \
} while (0)